import type { Recordable } from '@vben/types';

import { requestSystemClient } from '#/api/request';

export namespace SystemPostApi {
  export interface SystemPost {
    [key: string]: any;
    /** 岗位ID */
    postId: number;
    /** 岗位编码 */
    postCode: string;
    /** 岗位名称 */
    postName: string;
    /** 部门名称 */
    deptName: string;
    /** 部门id */
    deptId: number;
    /** 显示顺序 */
    showSort: number;
    /** 状态（1正常 0停用） */
    postStatus: number;
    /** 备注 */
    remark?: string;
    /** 创建时间（ISO 8601 格式字符串） */
    createTime: string;
  }
}

/**
 * 获取岗位列表数据
 */
async function getPage(params: Recordable<any>) {
  const data = requestSystemClient.get<Array<SystemPostApi.SystemPost>>(
    '/system/post/page',
    { params },
  );
  return data;
}

/**
 * 创建岗位
 * @param data 岗位数据
 */
async function createPost(
  data: Omit<SystemPostApi.SystemPost, 'children' | 'postId'>,
) {
  return requestSystemClient.post('/system/post/create', data);
}
/**
 * 更新部门
 *
 * @param id 部门 ID
 * @param data 部门数据
 */
async function updatePost(
  data: Omit<SystemPostApi.SystemPost, 'children' | 'postId'>,
) {
  return requestSystemClient.put(`/system/post/update`, data);
}

/**
 * 删除部门
 * @param id 部门 ID
 */
async function deletePost(postId: number) {
  return requestSystemClient.delete(`/system/post/delete/${postId}`);
}
/** 获取岗位精简信息列表 */
async function getSimplePostList() {
  return requestSystemClient.get<SystemPostApi.SystemPost[]>(
    '/system/post/simple-list',
  );
}
export { createPost, deletePost, getPage, getSimplePostList, updatePost };
